package br.com.laeventos.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.sql.Date;

import br.com.laeventos.interfaces.InterfaceBanco;
import br.com.laeventos.model.Participante;

public class ParticipanteDAO implements InterfaceBanco{
	
	public static Connection connection = null;
	
	public ParticipanteDAO() {
        if(connection == null){
                try {
					connection = ConnectionFactory.getConnection();
				} catch (ClassNotFoundException | SQLException e) {
					e.printStackTrace();
				}
        }
	 }

	public ArrayList<Participante> retornar(int limit, String tituloBusca, int opcao) throws Exception {
		ArrayList<Participante> lista  = new ArrayList<>();
		String sql;
		if (opcao == 0)
			sql = "SELECT * FROM participante WHERE nome_participante LIKE '%"+tituloBusca+"%' ORDER BY nome_participante LIMIT "+limit;
		else
			sql = "SELECT * FROM participante WHERE cpf LIKE '%"+tituloBusca+"%' ORDER BY nome_participante LIMIT "+limit;
		
		System.out.println(sql);
		PreparedStatement ps = connection.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		boolean flag = false;
		while(rs.next()){
			flag=true;
			Participante p = new Participante();
			int id = rs.getInt("id_participante");
			String cpf = rs.getString("cpf");
			String nome = rs.getString("nome_participante");
			Date dataNasc = rs.getDate("data_nascimento");
			String endereco = rs.getString("endereco");
			String cidade = rs.getString("cidade");
			String uf = rs.getString("uf");
			String cep = rs.getString("cep");
			String telefone = rs.getString("telefone");
			String email = rs.getString("email");
			p.setId(id);
			p.setCpf(cpf);
			p.setNome(nome);
			p.setDataNasc(dataNasc);
			p.setEndereco(endereco);
			p.setCidade(cidade);
			p.setUf(uf);
			p.setCep(cep);
			p.setTelefone(telefone);
			p.setEmail(email);
			lista.add(p);
		}
		if (flag){
			//CODIGO PARA ATIVIDADE NAO ENCONTRADAS
		}
		return lista;
	}

	public boolean cadastrar(Object obj) throws Exception {
		Participante participante = (Participante) obj;
		String sql = "INSERT INTO participante (id_participante, cpf, nome_participante, data_nascimento, endereco, cidade, uf, cep, telefone, email) VALUES(default, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        PreparedStatement ps = connection.prepareStatement(sql);
        ps.setString(1, participante.getCpf());
        ps.setString(2, participante.getNome());
        ps.setDate(3, participante.getDataNasc());
        ps.setString(4, participante.getEndereco());
        ps.setString(5, participante.getCidade());
        ps.setString(6, participante.getUf());
        ps.setString(7, participante.getCep());
        ps.setString(8, participante.getTelefone());
        ps.setString(9, participante.getEmail());
        int resultado = ps.executeUpdate();
        if (resultado == 0)
        	return false;
        else
        	return true;
	}


	public boolean alterar(Object obj) throws Exception {
		Participante participante = (Participante) obj;
		String sql = "UPDATE participante SET cpf = ?, nome_participante = ?, data_nascimento = ?, endereco = ?, cidade = ?, uf = ?, cep = ?, telefone = ?, email = ? WHERE codigo=" + participante.getId();
		PreparedStatement ps = connection.prepareStatement(sql);
		ps.setString(1, participante.getCpf());
        ps.setString(2, participante.getNome());
        ps.setDate(3, participante.getDataNasc());
        ps.setString(4, participante.getEndereco());
        ps.setString(5, participante.getCidade());
        ps.setString(6, participante.getUf());
        ps.setString(7, participante.getCep());
        ps.setString(8, participante.getTelefone());
        ps.setString(9, participante.getEmail());
        int resultado = ps.executeUpdate();
        if(resultado == 0){
            return false;
        }else{
            return true;
        }
		
	}

	
	public boolean deletar(Object obj) throws Exception {
		Participante participante = (Participante) obj;
		String sql = "DELETE FROM participante WHERE id="+participante.getId();
        PreparedStatement ps = connection.prepareStatement(sql);
        int resultado = ps.executeUpdate();
        if(resultado == 0){
            return false;
        }else{
            return true;
        }
	}

}
